#ifndef ENUM_EXT_H
#define ENUM_EXT_H

#include "extension.h"
#include <stdio.h>
#include <stdbool.h>

// 定义枚举类型（颜色）
typedef enum {
    RED,
    GREEN,
    BLUE,
    YELLOW,
    PURPLE
} Color;

// 扩展函数1：将Color转换为字符串
DEFINE_EXTENSION(Color, to_string, const char*);

// 扩展函数2：打印Color值
DEFINE_EXTENSION(Color, print, void);

// 扩展函数3：判断是否为暖色
DEFINE_EXTENSION(Color, is_warm, bool);

// 实现扩展函数
const char* Color_to_string(Color* self) {
    switch (*self) {
        case RED:    return "红色";
        case GREEN:  return "绿色";
        case BLUE:   return "蓝色";
        case YELLOW: return "黄色";
        case PURPLE: return "紫色";
        default:     return "未知颜色";
    }
}

void Color_print(Color* self) {
    printf("Color: %s (枚举值: %d)\n", EXTEND(Color, self, to_string), *self);
}

bool Color_is_warm(Color* self) {
    // 红色和黄色属于暖色
    return (*self == RED || *self == YELLOW);
}

#endif // ENUM_EXT_H
